package com.agua.enturno.vista.dto.assemblers;

import com.agua.enturno.excepciones.ExcepcionDeReglaDelNegocio;
import com.agua.enturno.modelo.prestador.PrestadorDeServicios;
import com.agua.enturno.vista.dto.PrestadorDeServiciosDTO;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

public class PrestadorDeServiciosAssembler extends NullAwareSimpleAssembler<PrestadorDeServicios, PrestadorDeServiciosDTO> {

	private RubroAssembler rubroAssembler = new RubroAssembler();
	
	@Override
	protected PrestadorDeServiciosDTO internalAssemble(PrestadorDeServicios prestadorDeServicios) {
		return new PrestadorDeServiciosDTO(
				prestadorDeServicios.getId(),
				rubroAssembler.assemble(prestadorDeServicios.getRubro()),
				prestadorDeServicios.getNombre(),
				prestadorDeServicios.getImagen(),
				prestadorDeServicios.getDireccion(),
				prestadorDeServicios.getTelefono(),
				prestadorDeServicios.getAcercaDe());
	}

	@Override
	protected PrestadorDeServicios internalDisassemble(PrestadorDeServiciosDTO prestadorDeServiciosDTO) 
			throws ExcepcionDeReglaDelNegocio {
		
		return new PrestadorDeServicios(
				rubroAssembler.disassemble(prestadorDeServiciosDTO.getRubro()),
				prestadorDeServiciosDTO.getNombre(),
				prestadorDeServiciosDTO.getImagen(),
				prestadorDeServiciosDTO.getDireccion(),
				prestadorDeServiciosDTO.getTelefono(),
				prestadorDeServiciosDTO.getAcercaDe());
	}
	
	public List<PrestadorDeServiciosDTO> assemble(Set<PrestadorDeServicios> prestadores) {
		
		List<PrestadorDeServiciosDTO> prestadoresDTO = new ArrayList<PrestadorDeServiciosDTO>();
		
		for (PrestadorDeServicios prestador : prestadores) 
			prestadoresDTO.add(assemble(prestador));
		
		return prestadoresDTO;
	}

}
